package com.tencent.qcloud.timchat.utils;

import android.content.Context;
import android.content.Intent;
import android.util.Log;

import com.tencent.imsdk.TIMConnListener;
import com.tencent.imsdk.TIMLogLevel;
import com.tencent.imsdk.TIMManager;
import com.tencent.imsdk.TIMSdkConfig;
import com.tencent.imsdk.TIMUserConfig;
import com.tencent.imsdk.TIMUserStatusListener;
import com.wbao.dianniu.im.Constant;
import com.wbao.dianniu.logical.DnApplication;
import com.wbao.dianniu.ui.MainActivity;



/**
 * 初始化
 * 包括imsdk等
 */
public class InitBusiness {

    private static final String TAG = InitBusiness.class.getSimpleName();

    private InitBusiness() {
    }

    public static void start(Context context) {
        initImsdk(context, 0);
    }

    public static void start(Context context, int logLevel) {
        initImsdk(context, logLevel);
    }


    /**
     * 初始化imsdk
     */
    private static void initImsdk(Context context, int logLevel) {
        TIMSdkConfig config = new TIMSdkConfig(Constant.SDK_APPID);
        config.enableCrashReport(false);
        config.enableLogPrint(true)
                .setLogLevel(TIMLogLevel.values()[logLevel]);
        //  ImSDK 默认日志存储路径为：SD 卡下，/tencent/imsdklogs/(your app package name)/
        //        .setLogPath(Environment.getExternalStorageDirectory().getPath() + "/Dianniu/");
        //初始化imsdk
        boolean ret = TIMManager.getInstance().init(context, config);
        //禁止服务器自动代替上报已读
    }


    /**
     * 在初始化 SDK 后，登录 SDK 之前，需要设置用户配置，ImSDK 的用户配置分四部分，分别如下：
     * <p>
     * 基本用户配置 —— 通过 TIMUserConfig 进行配置。
     * 消息扩展用户配置 —— 通过 TIMUserConfigMsgExt 进行配置。
     * 群组管理扩展用户配置 —— 通过 TIMUserConfigGroupExt 进行配置。
     * 资料关系链管理扩展用户配置 —— 通过 TIMUserConfigSnsExt 进行配置。
     */
    public static void userConfig() {
        //登录之前要初始化群和好友关系链缓存
        TIMUserConfig userConfig = new TIMUserConfig();
        userConfig.setUserStatusListener(new TIMUserStatusListener() {
            @Override
            public void onForceOffline() {
                Log.d(TAG, "receive force offline message 用户在其他地方登录 ");
                sendOfflineBroadcast();
            }

            @Override
            public void onUserSigExpired() {
                //票据过期，需要重新登录
//                Log.i(TAG, "onUserSigExpired....");
            }
        })
                .setConnectionListener(new TIMConnListener() {
                    @Override
                    public void onConnected() {
                        Log.i(TAG, "onConnected");
                    }

                    @Override
                    public void onDisconnected(int code, String desc) {
                        Log.i(TAG, "onDisconnected  code:" + code + "  desc:" + desc);
                    }

                    @Override
                    public void onWifiNeedAuth(String name) {
                        Log.i(TAG, "onWifiNeedAuth  name:" + name);
                    }
                });

        //设置刷新监听
        RefreshEvent.getInstance().init(userConfig);
        userConfig = FriendshipEvent.getInstance().init(userConfig);
        userConfig = MessageEvent.getInstance().init(userConfig);
        TIMManager.getInstance().setUserConfig(userConfig);
    }

    /**
     * 发送积分更新广播
     */
    private static void sendOfflineBroadcast() {
        Intent intent = new Intent();//创建Intent对象
        intent.setAction(MainActivity.ACTION_OFFLINE_NOTIFY);
        DnApplication.getContext().sendBroadcast(intent);//发送广播
    }


}
